/*
 * Clase: Entero
 *
 * Versi�n 1.0
 *
 * Copyrigth: Trabajo Pr�ctico Hector Morel - Gustavo Plan�s
 *
 */
package ecuacion;

/**
 * Clase Entero Implementaci�n de Numero para Integer
 *
 * @author Hector Morel, Gustavo Plan�s
 */
public class Entero implements Numero<Entero> {

    private int valor;

    /**
     * Constructor
     *
     * @param N�mero Integer
     */
    public Entero(int n) {
        valor = n;
    }

    /**
     * M�todo para comparaci�n
     *
     * @return Devuelve 1 si es mayor, -1 si es menor y 0 si es igual
     */
    public int comparar(Entero e) {

        if (this.valor < e.valor) {
            return -1;
        }

        if (this.valor > e.valor) {
            return 1;
        }

        return 0;
    }

    /**
     * Convierte a texto
     *
     * @return String del N�mero
     */
    public String toString() {
        return "" + valor;
    }

    /**
     * Suma el Nro. recibido
     *
     * @return Resultado de la Suma
     */
    public Entero sumar(Entero e) {
        return new Entero(this.valor + e.valor);
    }

    /**
     * Resta el Nro. recibido
     *
     * @return Resultado de la Resta
     */
    public Entero restar(Entero e) {
        return new Entero(this.valor - e.valor);
    }

    /**
     * Multiplica el Nro. recibido
     *
     * @return Resultado de la Multiplicaci�n
     */
    public Entero multiplicar(Entero e) {
        return new Entero(this.valor * e.valor);
    }

    /**
     * Multiplica por la inversa del Nro. recibido
     *
     * @return Resultado Inverso de la Multiplicaci�n
     */
    public Entero multiplicarInversa(Entero e) {
        return new Entero(this.valor * e.valor * -1);
    }

    /**
     * Divide el Nro. recibido
     *
     * @return Resultado de la Divisi�n
     */
    public Entero dividir(Entero e) {
        return new Entero(this.valor / e.valor);
    }

    /**
     * Devuelve Cero en el Formato Especificado
     *
     * @return Entero 0
     */
    public Entero devuelveCero() {
        return new Entero(0);
    }

    /**
     * Devuelve Uno en el Formato Especificado
     *
     * @return Entero 1
     */
    public Entero devuelveUno() {
        return new Entero(1);
    }

    /**
     * Verifica si es cero o no
     *
     * @return true si es cero y false en caso contrario
     */
    public boolean esCero() {
        return this.valor == 0;
    }
}
